function im2=LineFilter(im,len)

%% start
sz=size(im);
bm=zeros(sz(1),sz(2)-len+1);
imm=imfilter(im,[1,1,1])/3;
imm2=imfilter(im.*im,[1,1,1])/3;
imd=zeros(size(im));
imd(:,2:end-1)=1*(abs(im(:,1:end-2)-im(:,2:end-1))+abs(im(:,1:end-2)-im(:,3:end))+abs(im(:,2:end-1)-im(:,3:end)))/3;

ims=sqrt(imm2-imm.*imm);
im2=zeros(size(im));
for i=1:sz(1)
    x=im(i,:);
    xf=imm(i,:);
    xs=ims(i,:);
    xd=imd(i,:);
    t=x((len+1)/2:sz(2)-(len-1)/2)>xf(2:sz(2)-len+2)+3*xd(2:sz(2)-len+2)+3/255 & x((len+1)/2:sz(2)-(len-1)/2)>xf(len-1:sz(2)-1)+3*xd(len-1:sz(2)-1)+3/255;
%     t=x((len+1)/2:sz(2)-(len-1)/2)>max(xf(2:sz(2)-len+2)+3*xd(2:sz(2)-len+2),5/255) & x((len+1)/2:sz(2)-(len-1)/2)>max(xf(len-1:sz(2)-1)+3*xd(len-1:sz(2)-1),5/255);
    bm(i,t)=1;
    im2(i,(len+1)/2:sz(2)-(len-1)/2)=im(i,(len+1)/2:sz(2)-(len-1)/2)-(xf(2:sz(2)-len+2)+xf(len-1:sz(2)-1))/2;
end
imb=zeros(sz);
imb(:,(len+1)/2:sz(2)-(len-1)/2)=bm;
im2=im;
% im2(im2<0)=0;
im2(~logical(imb))=0;